SUBROUTINE ExportGridIntegerToESRI_BINARY &
!
(layer, fileName)
USE Utilities, ONLY: &
!Imported routines:
GetUnit
IMPLICIT NONE
!Arguments with intent(in):
TYPE (grid_integer), INTENT (IN) :: layer
CHARACTER (LEN = *), INTENT (IN) :: fileName
!Local variables:
INTEGER (KIND = short) :: fileUnit
INTEGER (KIND = short) :: ios
INTEGER (KIND = short) :: recordLength
INTEGER (KIND = short) :: recordNumber
INTEGER (KIND = short) :: i,j
!------------end of declaration------------------------------------------------
!open file
fileUnit = GetUnit ()
OPEN (UNIT = fileUnit, file = TRIM(fileName) // '.hdr', IOSTAT = ios)
IF (ios /= 0) THEN
CALL Catch ('error', 'GridLib', &
'error opening file: ', &
code = openFileError, argument = TRIM(fileName) // '.hdr' )
END IF
!write header
WRITE(fileUnit,'(a14,i4)') "ncols ", layer % jdim
WRITE(fileUnit,'(a14,i4)') "nrows ", layer % idim
WRITE(fileUnit,'(a14,f15.5)') "xllcorner ", layer % xllcorner
WRITE(fileUnit,'(a14,f15.5)') "yllcorner ", layer % yllcorner
WRITE(fileUnit,'(a14,f15.5)') "cellsize ", layer % cellsize
WRITE(fileUnit,'(a14,i8)') "NODATA_value ", layer % nodata
WRITE(fileUnit,'(a18)') "BYTEORDER LSBFIRST"
CLOSE (fileUnit)
!write data
fileUnit = GetUnit ()
INQUIRE (IOLENGTH = recordLength) 100_long
OPEN (UNIT = fileUnit, file = TRIM(fileName) // '.flt', &
FORM = 'UNFORMATTED', ACCESS = 'DIRECT', RECL = recordLength, &
IOSTAT = ios)
IF (ios /= 0) THEN
CALL Catch ('error', 'GridLib', &
'error opening file: ', &
code = openFileError, argument = TRIM(fileName) // '.flt' )
END IF
recordNumber = 0
DO i = 1,layer % idim
DO j = 1, layer % jdim
recordNumber = recordNumber + 1
WRITE (fileUnit,REC = recordNumber) layer % mat (i,j)
END DO
END DO
CLOSE (fileUnit)
END SUBROUTINE ExportGridIntegerToESRI_BINARY